iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0

今天把sft.py也改成了可以resume training,其實看到現在,對於整個訓練的細節了解後,可以歸納出pretrainsft在訓練的程式上的不同點:

  1. Load Data
    • Dataset類別PretrainDataset vs SFTDataset
    • 前處理檔案./data/pretrain_data.bin vs ./data/sft_data.csv
    • dataloader讀取資料(X,Y) vs (X,Y,loss_mask)
  2. Loss計算
    • pretrain直接使用
      raw_model.last_loss
    • sft額外使用loss_mask計算loss
      loss = F.cross_entropy(logits.view(-1, logits.size(-1)), Y.view(-1), ignore_index=0,reduce=False)
      loss_mask = loss_mask.view(-1)
      loss = torch.sum(loss*loss_mask)/loss_mask.sum()
      

除此之外的程式碼都一模一樣,為了重本這樣重複兩份code改來改去容易產生bug,接下來打算花一些時間修改這樣pretrainsft的訓練都使用同一個程式。


上一篇
Day 18 - Baby LLama2 Chinese (12)
下一篇
Day 20 - Baby Llama2 Chinese (13)
系列文
用單張顯卡探索大型語言模型的奧秘30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言